from cn.jzq.oop.model.Animal import Animal
from cn.jzq.oop.model.Dog import Dog
from cn.jzq.oop.model.Timer import Timer
from cn.jzq.oop.model.Student import Student

student = Student()
student.score = 60
print(student.score)

student.age = 22
print(student.age)

student.num = '03'
print(student.num)


# student.to_string()

# setattr(student, 'score', 22)
# print(getattr(student, 'score'))

# print('student.age: ', student.age)


dog = Dog()
dog.run()


def run_twice(animal):
    animal.run()
    animal.run()


a_animal = Animal()
run_twice(a_animal)

run_twice(Dog())

# 动态语言的“鸭子类型”，它并不要求严格的继承体系，一个对象只要“看起来像鸭子，走起路来像鸭子”，那它就可以被看做是鸭子。
# Python的“file-like object“就是一种鸭子类型。对真正的文件对象，它有一个read()方法，返回其内容。
# 但是，许多对象，只要有read()方法，都被视为“file-like object“。
# 许多函数接收的参数就是“file-like object“，你不一定要传入真正的文件对象，完全可以传入任何实现了read()方法的对象。
run_twice(Timer())
